import EventBus from '@/util/EventBus';
import axios, { AxiosError } from 'axios';

// 创建一个实例
const instance = axios.create({
  baseURL: '/api',
  timeout: 5000,
});

// 拦截
instance.interceptors.request.use(
  (config) => {
    // 判断token，携带
    const token = localStorage.getItem('token');
    if (token) {
      config.headers = config.headers || {};
      config.headers['x-auth-token'] = token;
    }

    return config;
  },
  (err) => Promise.reject(err)
);
instance.interceptors.response.use(
  (res) => {
    // console.log(1);

    // res这个对象里面，会包含很多 我们在页面上用不到的数据，我们一般只会需要 res.data
    return res.data;
  },
  (err: AxiosError<IResponse<any>, any>) => {
    if (err.response?.data.errCode === 1002) {
      EventBus.emit('logintimeout');
      // 如果把一个 文件 使用 impart 导入， 说明当前这个 组件/代码  一定要依赖于 import 进来的内容 —— 紧耦合
      // 把原本必须放在这里才能实现的效果，拆分开了 --- 解耦
    }
    Promise.reject(err);
  }
);

export default instance;
